/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.module.radiology.report.template; import java.util.ArrayList; import java.util.List; import org.hibernate.Criteria; import org.hibernate.SessionFactory; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; /** * Hibernate specific MrrtReportTemplate related functions. This class should not be used directly. All * calls should go through the {@link org.openmrs.module.radiology.report.template.MrrtReportTemplateService} methods. * * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateDAO * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateService */ class HibernateMrrtReportTemplateDAO implements MrrtReportTemplateDAO { private SessionFactory sessionFactory; /** * Set session factory that allows us to connect to the database that Hibernate knows about. * * @param sessionFactory SessionFactory */ public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /** * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateService#getMrrtReportTemplate(Integer) */ @Override public MrrtReportTemplate getMrrtReportTemplate(Integer templateId) { return (MrrtReportTemplate) sessionFactory.getCurrentSession() .get(MrrtReportTemplate.class, templateId); } /** * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateService#getMrrtReportTemplateByUuid(String) */ @Override public MrrtReportTemplate getMrrtReportTemplateByUuid(String uuid) { final Criteria criteria = createMrrtReportTemplateCriteria(); criteria.add(Restrictions.eq("uuid", uuid)); return (MrrtReportTemplate) criteria.uniqueResult(); } /** * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateService#getMrrtReportTemplateByIdentifier(String) */ @Override public MrrtReportTemplate getMrrtReportTemplateByIdentifier(String identifier) { final Criteria criteria = createMrrtReportTemplateCriteria(); criteria.add(Restrictions.eq("dcTermsIdentifier", identifier)); return (MrrtReportTemplate) criteria.uniqueResult(); } /** * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateService#getMrrtReportTemplates(MrrtReportTemplateSearchCriteria) */ @SuppressWarnings("unchecked") @Override public List<MrrtReportTemplate> getMrrtReportTemplates(MrrtReportTemplateSearchCriteria searchCriteria) { final Criteria crit = sessionFactory.getCurrentSession() .createCriteria(MrrtReportTemplate.class); crit.addOrder(Order.asc("dcTermsTitle")); if (searchCriteria.getTitle() != null) { crit.add(Restrictions.ilike("dcTermsTitle", searchCriteria.getTitle() + "%", MatchMode.ANYWHERE)); } if (searchCriteria.getPublisher() != null) { crit.add(Restrictions.ilike("dcTermsPublisher", searchCriteria.getPublisher() + "%", MatchMode.ANYWHERE)); } if (searchCriteria.getLicense() != null) { crit.add(Restrictions.ilike("dcTermsLicense", searchCriteria.getLicense() + "%", MatchMode.ANYWHERE)); } if (searchCriteria.getCreator() != null) { crit.add(Restrictions.ilike("dcTermsCreator", searchCriteria.getCreator() + "%", MatchMode.ANYWHERE)); } final List<MrrtReportTemplate> result = (List<MrrtReportTemplate>) crit.list(); return result == null ? new ArrayList<>() : result; } /** * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateService#saveMrrtReportTemplate(MrrtReportTemplate) */ @Override public MrrtReportTemplate saveMrrtReportTemplate(MrrtReportTemplate template) { sessionFactory.getCurrentSession() .save(template); return template; } /** * @see org.openmrs.module.radiology.report.template.MrrtReportTemplateService#purgeMrrtReportTemplate(MrrtReportTemplate) */ @Override public void purgeMrrtReportTemplate(MrrtReportTemplate template) { sessionFactory.getCurrentSession() .delete(template); } /** * A utility method creating a criteria for MrrtReportTemplate * * @return criteria for MrrtReportTemplate */ private Criteria createMrrtReportTemplateCriteria() { return sessionFactory.getCurrentSession() .createCriteria(MrrtReportTemplate.class); } }